# -*- coding: utf-8 -*-
#
# JOAQUÍN RAMÓN ANTÚNEZ SÁNCHEZ - 30 de agosto de 2014
#

from mezzo import mezzo
from decca import decca
from mon.mon import monstr


########################################################################################
# CD
########################################################################################
class cd(mezzo):                
    
    def __str__(self):
        value = '{} \"{}'.format( str(self.id).zfill(4), self.titulo )
        if len(self.subtitulo) != 0:
            value += ' ({})'.format(self.subtitulo)
        value += '\": {0} CD {1} {2}'.format(self.volumenes, str(self.etiqueta)[4:], self.serie)
        if self.edicion != 0:
            value += ', {}'.format(self.edicion)     
            
        return value    
    
    def clear(self):
        super(cd, self).clear()
        self._mezzo__data['volumenes'] = 1
    
    # PROPIEDADES    
    def __set_titulo(self, value):      self._mezzo__data['titulo'] = value.strip()
    def __get_titulo(self):             return self._mezzo__data['titulo']
    def __set_subtitulo(self, value):   self._mezzo__data['subtitulo'] = value.strip()
    def __get_subtitulo(self):          return self._mezzo__data['titulo_interpretacion']
    def __get_vls(self):                return int( self._mezzo__data['volumenes'] )
    def __set_vls(self, value):
        try:
            if value < 1 or value > 100:
                raise Exception('El número de discos que debe consignar debe ser de 1 a 100')
            else:
                self._Do__data['volumenes'] = int(value)
        except Exception as e:
            print e.message()
            self._mezzo__data['volumenes'] = 1
    def __get_id_etiqueta(self): return decca( self._mezzo__data['id_etiqueta'] )
    def __set_id_etiqueta(self, value): 
        try:
            self._mezzo__data['id_etiqueta'] = int( value )
        except:            
            self._mezzo__data['id_etiqueta'] = 0
    def __get_coleccion(self): return monstr( self._mezzo__data['coleccion'] ).totitle()
    def __set_coleccion(self, value): 
        self._mezzo__data['coleccion'] = monstr(value).toupper()
    def __get_serie(self): return self._mezzo__data['numero_de_serie']
    def __set_serie(self, value): self._mezzo__data['numero_de_serie'] = str(value).strip()
    def __get_edicion(self):
        x = int( self._mezzo__data['edicion'] )
        if x:
            return x
        else:
            return str('')                              
    def __set_edicion(self, value):
        if not str( value ).strip().isdigit():
            self._mezzo__data['edicion'] = 0
        else:
            value = int(value)            
            if value >= 1958 and value <= date.today().year:
                self._mezzo__data['edicion'] = value
            else:
                self._mezzo__data['edicion'] = 0    
                                  
    def __get_tiempo(self): 
        h = int( self._mezzo__data['horas'] ) 
        m = int( self._mezzo__data['minutos'] )
        s = int( self._mezzo__data['segundos'] )
        
        if not h and not m and not s: return ''
        if not h: return '{0}:{1}'.format( str(m).zfill(2), str(s).zfill(2) )        
        return '{0}.{1}:{2}'.format( str(h), str(m).zfill(2), str(s).zfill(2) )
    
    def __set_tiempo(self, value): 
        t = Tempo(value)
        self._mezzo__data['horas']        = t.horas
        self._mezzo__data['minutos']      = t.minutos
        self._mezzo__data['segundos']     = t.segundos 
        
    def __get_generos(self): return self._mezzo__data['generos']
    def __set_generos(self, value):
        try:
            self._mezzo__data['generos'] = int(value)
        except Exception as ex:
            print ex.message()
            self._mezzo__data['generos'] = 0                                      

            
    # propiedades===================================================================================
    titulo      = property(__get_titulo,    __set_titulo)
    subtitulo   = property(__get_subtitulo, __set_subtitulo)
    volumenes   = property(__get_vls, __set_vls)
    etiqueta    = property(__get_id_etiqueta, __set_id_etiqueta)
    coleccion   = property(__get_coleccion, __set_coleccion)
    serie       = property(__get_serie, __set_serie)
    edicion     = property(__get_edicion, __set_edicion)
    tiempo      = property(__get_tiempo, __set_tiempo)
    generos     = property(__get_generos, __set_generos)
    #================================================================================================
    
    
                

    
                       